from django.db import models


class NewsTag(models.Model):
    name = models.CharField(max_length=20)
    # 真删/假删
    # 真删：物理删除 delete() 从数据库直接删除
    # 假删: 逻辑删除  update(is_delete=False)  objects.filter(is_delete=True)
    is_delete = models.BooleanField(default=True)

    class Meta:
        #  表示按照排序 如果是id 就是正序 1 2 3 4  -id  4 3 2 1
        # 改表名 db_name = ''
        ordering = ['-id']


# 在实现功能 第一步就是设计表
class News(models.Model):
    title = models.CharField(max_length=50, null=False)
    desc = models.CharField(max_length=400, null=False)
    # 内容
    content = models.TextField()
    # 存数据库的存的是文件的地址  并不是文件  CharField  EmailField
    thumbnail_url = models.URLField()
    # 清醒的时间 和 幼稚的时间
    # 发布时间 时区  存数据库的时候 却是8小时之前的 UTC 时间 虽然存进去是 8小时之前 但是 time_since取出来是感觉你当前的时间决定
    pub_time = models.DateTimeField(auto_now_add=True)
    # 假删/真删
    is_delete = models.BooleanField(default=True)

    # 外键  这个表示 如果你删除了 标签或者作者 就将这个字段设置为空 model.SET_NULL 级联删除
    tag = models.ForeignKey("NewsTag", on_delete=models.SET_NULL, null=True, related_name='news')
    author = models.ForeignKey("authPro.User", on_delete=models.SET_NULL, null=True)

    class Meta:
        # 排序
        ordering = ['-pub_time']


class NewsComment(models.Model):
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey("authPro.User", on_delete=models.CASCADE)
    # news.newscomment_set.all()
    # news.comment.all()
    news = models.ForeignKey("News", on_delete=models.CASCADE, related_name='comment')

